﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using Sistema_Totem.Datos.SqlServer;
using System.Net;
using System.Text;
using System.IO;

namespace Sistema_Totem.Vista.ERS
{
    public partial class ModificarErsSecciones : System.Web.UI.Page
    {        
        private String postdata = "../ERS/ModificarErsSeccionesVacias.aspx";
        private List<String> secciones = new List<String>();
        private SqlServerErs sqlers;
        private String NombreProyecto = "ProyectoPrueba";
        private int IdErs = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //if (Session["tipo_usuario"].ToString() != "Gerente de Proyecto" && Session["tipo_usuario"].ToString() != "Analista")
                //{
                //    Response.Redirect("~/Vista/Login/Login1.aspx");
                //}
                //Proyecto proy = (Proyecto)Session["objProyecto"];
                ////NombreProyecto= /*Recibe el nombre de proyecto*/
                //if (proy.Nombre.ToString() != null)
                //{
                //    NombreProyecto = proy.Nombre.ToString();
                //}
            }
            catch (NullReferenceException)
            {
                //Response.Redirect("~/Vista/Login/Login1.aspx");
            }
            
            sqlers = new SqlServerErs();
            IdErs = SelectIrErs(NombreProyecto);            
            if (IdErs == 0)
            {
                Response.Redirect("../ERS/CrearErsSecciones.aspx");
            }

            if (!IsPostBack)
            {
                secciones = sqlers.SelectSeccionesErs(NombreProyecto);
                List<Seccion> datos = GetData();
                GridViewERS_secciones.DataSource = datos;
                GridViewERS_secciones.DataBind();
                CheckPredeterminado(sender, e);
            }
        }

        /// <summary>
        /// Recibe la lista de las secciones y las asigna a otra lista
        /// </summary>
        /// <returns>Retorna una lista de tipo dato</returns>
        protected List<Seccion> GetData()
        {
            List<Seccion> datos = new List<Seccion>();

            for (int i = 0; i < secciones.Count; i++)
            {
                Seccion dato = new Seccion
                {
                    Nombre = secciones[i],

                };
                datos.Add(dato);
            }
            return datos;
        }


        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {

        }

        protected void GridViewERS_secciones_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            HacePost();            
            Response.Redirect(postdata);
        }

        /// <summary>
        /// Recorre el GridViewERS_secciones fila por fila y al encontrar
        /// un checkbox marcado toma la seccion a la que corresponde y la 
        /// concatena en un String para hacer un POST de esos valores y 
        /// pasarlos a la siguiente pantalla
        /// </summary>
        protected void HacePost()
        {
            int i = 0;
            Boolean primero = true;
            secciones = new List<String>();
            foreach (GridViewRow fila in GridViewERS_secciones.Rows)
            {
                CheckBox check = (CheckBox)fila.FindControl("chkSeleccionEscoger");
                if (check.Checked)
                {
                    if (primero)
                    {
                        postdata += "?SECCION" + i + "=" + fila.Cells[0].Text;
                        primero = false;
                        i++;
                    }
                    else
                    {
                        postdata += "&SECCION" + i + "=" + fila.Cells[0].Text;
                        i++;
                    }
                }
            }
        }

        /// <summary>
        /// Trae las secciones fijadas por el usuario
        /// </summary>
        /// <param name="NombreProyecto">Contiene el nombre del proyecto</param>
        /// <returns>Retorna las secciones en una lista de String</returns>
        protected List<String> SelectSeccionesFijadas(String NombreProyecto)
        {
            return sqlers.SelectSeccionesFijadas(NombreProyecto);
        }

        /// <summary>
        /// Trae el Id del ERS invocando a una funcion en SqlServerErs
        /// </summary>
        /// <param name="NombreProyecto">Contiene el nombre del proyecto</param>
        /// <returns>Retorna un entero con el valor del id</returns>
        protected int SelectIrErs(String NombreProyecto)
        {
            return sqlers.SelectIdErsExistente(NombreProyecto);
        }

        /// <summary>
        /// Marca e inhabilita los checkbox cuando la seccion ya se encuentra
        /// previamente dentro del documento agregado
        /// </summary>
        /// <param name="sender">Objeto generico de la clase</param>
        /// <param name="e">Variable que maneja los eventos de la clase</param>
        protected void CheckPredeterminado(object sender, EventArgs e)
        {
            List<String> NombreSeccion = new List<String>();
            NombreSeccion = SelectSeccionesFijadas(NombreProyecto);
            foreach (GridViewRow fila in GridViewERS_secciones.Rows)
            {
                CheckBox check = (CheckBox)fila.FindControl("chkSeleccionEscoger");
                for (int i = 0; i < NombreSeccion.Count; i++)
                {
                    if (NombreSeccion[i].Equals(fila.Cells[0].Text.ToString()))
                    {
                        check.Checked = true;
                        check.Enabled = false;
                    }
                }
            }
        }

        /// <summary>
        /// Marca todos los checkbox del gridview
        /// </summary>
        /// <param name="sender">Objeto generico de la clase</param>
        /// <param name="e">Variable que maneja los eventos de la clase</param>
        protected void CheckTodo(object sender, EventArgs e)
        {
            foreach (GridViewRow fila in GridViewERS_secciones.Rows)
            {
                CheckBox check = (CheckBox)fila.FindControl("chkSeleccionEscoger");
                check.Checked = true;
            }
        }
    }
}